// 1.安装redux模块 --- 一次  yarn add redux -S
// 2.引入redux, 引入创建状态管理器的方法 createStore
import { createStore } from 'redux'

// 3.创建 reducer 纯函数（初始化的状态，修改数据返回新的状态）
// const reducer = () => {}
// const reducer = (state = { list: [1, 2, 3], a: 100}) => {}
// const reducer = (state = { list: [1, 2, 3], a: 100}, action) => {}
const reducer = (state = {
  list: [1, 2, 3],
  a: 100
}, action) => {
  const { type, payload } = action
  switch (type) {
    case 'CHANGE_LIST':
      // 如何才能返回新的状态 --- js如何返回新的状态 --- 合并对象
      // Object.assign({}, obj1, obj2)
      // { ...obj1, a: 2}
      // return Object.assign({}, state, { list: payload })
      return { ...state, list: payload }
    case 'CHANGE_A':
      return { ...state, a: payload }
    default:
      return state;
  }
}

// 4.创建状态管理器
const store = createStore(reducer)

// 5. 暴露模块
export default store
// store.dispatch({
//   type: 'change_list',
//   payload: [4, 5, 6]
// })